package main

import "fmt"

func main() {
	a := returnN()
	fmt.Println(a)
}

func returnN() (result int) {
	defer func() {
		if p := recover(); p != nil {
			// 如果 内置的recover() 在延迟函数内部调用，而且这个包含defer语句的函数发生宕机，recover会终止当前的宕机状态 并返回宕机的值,函数不会从之前的地方继续执行而是正常返回
			// 如果recover 在其他任何情况下执行，则不会有任何效果且返回nil
			result = p.(int)
		}
	}()
	panic(3)
}
